package com.llb666.shop.items.domain.repository;

import com.llb666.shop.items.domain.entity.Category;

import java.util.List;
import java.util.Set;

/**
 * 商品分类仓储层.
 *
 * @author llb666
 */
public interface CategoryRepository {

    /**
     * 查询最上级分类列表.
     *
     * @return 商品分类列表
     */
    List<Category> queryAllCategoryRoot();

    /**
     * 根据父级商品类目id,查询子级商品类目列表.
     *
     * @param rootCatId 父级商品类目Id.
     * @return 商品类目列表
     */
    List<Category> getCategoryByRootCatId(Integer rootCatId);

    /**
     * 根据父级商品类目id列表,查询子级商品类目列表.
     *
     * @param rootCatIds 父级商品类目Id列表.
     * @return 商品类目列表
     */
    List<Category> getCategoryByRootCatIds(Set<Integer> rootCatIds);

    /**
     * 根据商品类型id查询商品类目.
     *
     * @param rootCatIds 一级商品类目id列表
     * @return 商品类目
     */
    List<Category> getCategoryByRootId(List<Integer> rootCatIds);
}
